fix: add missing odd numbers to CPU core/processor count mapping - #718
Conversation
1. 在 DeviceCpu::m_trNumber 映射表中补齐 3 至 127 的全部奇数条目; 2. 解决逻辑处理器数为奇数时查表落空、数字丢失不显示的问题; ===================================== 1. added all missing odd number entries (3-127) to DeviceCpu::m_trNumber map; 2. fixed logical processor count being dropped when it is an odd number; Log: 修复设备管理器处理器概况中逻辑处理器数为奇数时数量显示缺失的问题 Bug: https://pms.uniontech.com/bug-view-372319.html
There was a problem hiding this comment.
Sorry @GongHeng2017, you have reached your weekly rate limit of 500000 diff characters.
Please try again later or upgrade to continue using Sourcery
Reviewer's GuideExtends the CPU core count translation map so that all odd numbers from 3 to 127 have localized string entries, preventing missing numeric words when displaying CPU overview for systems with an odd number of logical processors. Sequence diagram for CPU overview number lookup with extended odd mappingssequenceDiagram
actor User
participant DeviceManagerUI
participant CpuInfo
participant DeviceCpu
participant m_trNumber
User->>DeviceManagerUI: openCpuOverview
DeviceManagerUI->>CpuInfo: logicalNum
CpuInfo-->>DeviceManagerUI: coreCount
DeviceManagerUI->>DeviceCpu: getOverviewInfo coreCount
DeviceCpu->>m_trNumber: value coreCount ""
m_trNumber-->>DeviceCpu: localizedNumberText
DeviceCpu-->>DeviceManagerUI: overviewText_with_number
DeviceManagerUI-->>User: displayCpuOverview
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
deepin pr auto review★ 总体评分:85分■ 【总体评价】
■ 【详细分析】
■ 【改进建议代码示例】 // 建议将静态映射表替换为动态生成函数,提高可维护性
// 以下为示例逻辑,实际实现可根据需要调整
const char* DeviceCpu::getNumberString(int number) {
static const char* ones[] = {"", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten",
"Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"};
static const char* tens[] = {"", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"};
static QHash<int, QString> cache;
if (cache.contains(number)) {
return cache.value(number).toUtf8().constData();
}
QString result;
if (number == 0) {
result = "Zero";
} else if (number < 20) {
result = ones[number];
} else if (number < 100) {
result = tens[number / 10];
if (number % 10 != 0) {
result += "-" + QString(ones[number % 10]).toLower();
}
} else {
result = "One hundred";
if (number % 100 != 0) {
int rem = number % 100;
result += " and ";
if (rem < 20) {
result += ones[rem].toLower();
} else {
result += tens[rem / 10].toLower();
if (rem % 10 != 0) {
result += "-" + QString(ones[rem % 10]).toLower();
}
}
}
}
cache[number] = result;
return cache.value(number).toUtf8().constData();
} |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: GongHeng2017, max-lvs The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
|
/merge |
|
/forcemerge |
|
This pr force merged! (status: unknown) |
根因分析
设备管理器 CPU 概况的数字映射表
DeviceCpu::m_trNumber只收录了 1 和偶数,不含任何大于 1 的奇数。当逻辑处理器数为奇数(如本机 9)时,getOverviewInfo()中m_trNumber.value(9, "")查表落空返回空串,导致数字被静默丢弃,显示成(六核/逻辑处理器)而缺少「九」。关键证据:
DeviceCpu.cpp:10-71—m_trNumber表 62 条中唯一奇数是 1,其余全为偶数DeviceCpu.cpp:193-202—getOverviewInfo()用m_trNumber.value(N, "")查表,落空返回空串无回退cpuinfo.cpp:91-101logicalNum()累加逻辑核数,结果可为奇数(非对称线程配置)修复方案
在
m_trNumber映射表中补齐 3 至 127 的全部奇数条目,使任意奇数核数/逻辑处理器数都能查到对应文本,不再落空丢失数字。改动安全评估
低风险。改动为纯数据表扩展——仅在静态 const 映射表中新增 63 条条目,不涉及任何函数签名、逻辑流程或调用方变更,对现有偶数场景行为无影响。
Summary by Sourcery
Bug Fixes: